/*
 * @(#) UserService.java 2011-9-6
 *
 * Copyright (c) 2011, Strong Technology. All Rights Reserved.
 * Strong Technology. CONFIDENTIAL
 */
package cn.strong.gweva.system.business.service;

import java.util.List;

import cn.strong.gweva.common.business.entity.LoginEntity;
import cn.strong.gweva.common.business.entity.PagerEntity;
import cn.strong.gweva.common.business.entity.db.JxkhUserEntity;
import cn.strong.gweva.system.business.entity.UserEntity;


/**
 * 用户业务接口
 * 
 * @author lilanfei
 * @version 1.0
 * @since 2011-9-6
 */
public interface UserService
{
	
	/**
	 * 检索用户分页信息
	 * 
	 * @param pagerEntity
	 * @param user4Search 检索用用户信息
	 * @return 用户分页信息
	 * @throws Exception
	 */
	public PagerEntity searchUserPage(PagerEntity pagerEntity, UserEntity user4Search) throws Exception;
	
	/**
	 * 检索用户列表
	 * 
	 * @param user4Search 检索用用户信息
	 * @return 用户列表
	 * @throws Exception
	 */
	public List<UserEntity> searchUserList(UserEntity user4Search) throws Exception;
	
	/**
	 * 通过用户编号，检索用户信息。
	 * 
	 * @param userId 用户编号
	 * @return
	 * @throws Exception
	 */
	public JxkhUserEntity searchUserById(Integer userId) throws Exception;
	
	/**
	 * 校验用户的存在性。
	 * 
	 * @param user 用户信息
	 * @return
	 * @throws Exception
	 */
	public int checkUserHasExisted(JxkhUserEntity user) throws Exception;

	/**
	 * 新增用户
	 * 
	 * @param userInfo 用户信息
	 * @param loginUser 登陆者
	 * @return 用户信息
	 * @throws Exception
	 */
	public JxkhUserEntity insert(JxkhUserEntity userInfo, LoginEntity loginUser) throws Exception;
	
	/**
	 * 通过用户编号，逻辑删除用户。
	 * 
	 * @param user 用户
	 * @param loginUser 登录用户
	 * @return
	 * @throws Exception
	 */
	public int logicDeleteById(JxkhUserEntity user, LoginEntity loginUser) throws Exception;
	
	/**
	 * 通过用户编号，删除用户。
	 * 
	 * @param userId 用户编号
	 * @return
	 * @throws Exception
	 */
	public int deleteById(Integer userId) throws Exception;
	
	/**
	 * 更新用户信息。
	 * 
	 * @param user 更新的用户信息
	 * @param loginUser 登录的用户
	 * @return
	 * @throws Exception
	 */
	public int update(JxkhUserEntity user, LoginEntity loginUser) throws Exception;
	
}
